package com.zhuiyun.project.api.products.product.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhuiyun.project.common.entity.BaseEntity;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @ClassName Sort
 * @Description TODO 分类实体类
 * @Author ypq
 * @Date 2023/10/25 16:44
 **/
@Data
@TableName("workshop_sort")
public class Sort extends BaseEntity {
    /**
     * 分类ID
     * 主键由数据库自动生成（主要是自动增长型）
     */
    @TableId(type = IdType.AUTO)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long sortId;

    /**
     * 分类名称
     */
    private String sortName;
    /**
     * 父分类ID
     */
    private Long parentId;
    /**
     * 显示顺序
     */
    private Integer orderNum;
    /**
     * 分类类型（1一级分类，2二级分类，3三级分类,以此类推）
     */
    private Integer sortType;
    /**
     * 分类状态（0正常 1停用）
     */
    private String sortStatus;
    /**
     * 创建者
     */
    private String createBy;
    /**
     * 创建时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")//JsonFormat是出参格式化。
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")//DateTimeFormat 是入参格式化；
    private Date createTime;
    /**
     * 更新者
     */
    private String updateBy;
    /**
     * 更新时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")//JsonFormat是出参格式化。
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")//DateTimeFormat 是入参格式化；
    private Date updateTime;
    /**
     * 备注
     */
    private String remark;

    /**
    * 分类图片
    */
    private String sortImgId;

    /** 子菜单 */
    @TableField(exist = false)
    private List<Sort> children = new ArrayList<Sort>();

    /**
     * 分类图标
     */
    private String icon;
    /**
     * 分类审批
     */
    private String approval;
    /**
     * 父类名称
     */
    @TableField(exist = false)
    private String parentName;

    /**
     * 分类层级拼串
     */
    @TableField(exist = false)
    private String sortLevel;
}
